﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ControlsLib;
using GestionePolveri2.DAL;
using LinqKit;
using System.Data.Objects;
using FrameworkLib.Filters;
using GestionePolveriLib.Facades;

namespace GestionePolveriLib.BL.FilterBags
{
    public class ReportDirezionaleFilterBag : FilterBase<ReportDirezionale_Result>, IFilterBase
    {
        public string Famiglia { get; set; }
        public string Impianto { get; set; }
        public string CodicePolvere { get; set; }
        public string Applicazione { get; set; }
        public string CodiceColore { get; set; }
        public byte? Ordinamento { get; set; }
        public PolvereTypes Tipo { get; set; }
        public string CodiceLotto { get; set; }
        public string Fornitore { get; set; }
        public string TipologiaSM { get; set; }

        public ReportDirezionaleFilterBag()
        {
            Famiglia = null;
            Impianto = null;
            CodicePolvere = null;
            Applicazione = null;
            CodiceColore = null;
            Ordinamento = 1;
            Tipo = PolvereTypes.Tutte;
            CodiceLotto = null;
            Fornitore = null;
            TipologiaSM = null;
        }

        public override System.Linq.Expressions.Expression<Func<ReportDirezionale_Result, bool>> SetUpFilter()
        {
            throw new NotImplementedException();
        }

        public override string ToTraceString()
        {
            string retValue = base.ToTraceString();

            StringBuilder sb = new StringBuilder(base.ToTraceString());

            sb.Append(FilterBagHelper.GetFamigliaTraceString(this.Famiglia));
            sb.Append(FilterBagHelper.GetImpiantoTraceString(this.Impianto));
            sb.Append(FilterBagHelper.GetCodicePolvereTraceString(this.CodicePolvere));
            sb.Append(FilterBagHelper.GetApplicazioneTraceString(this.Applicazione));
            sb.Append(FilterBagHelper.GetCodiceColoreTraceString(this.CodiceColore));
            sb.Append(FilterBagHelper.GetOrdinamentoTraceString(this.Ordinamento.Value));
            sb.Append(FilterBagHelper.GetTipoTraceString(this.Tipo));
            sb.Append(FilterBagHelper.GetCodiceLottoTraceString(this.CodiceLotto));
            sb.Append(FilterBagHelper.GetFornitoreTraceString(this.Fornitore));
            sb.Append(FilterBagHelper.GetFornitoreTraceString(this.TipologiaSM));

            return sb.ToString();
        }
    }
}
